home *** CD-ROM | disk | FTP | other *** search
- /*
- * the class EDIT_PIN
- * Copyright (C) 1997 Kazutaka Hirata <khirata@jove.acs.unt.edu>
- */
-
- #include "../stdafx.h"
-
- #include "../common/bool.h"
-
- #include "edpndlg.h"
-
- #include "../resource.h"
-
- #include "edpin.h"
-
- STAGE* EDIT_PIN::init_new(KBAN_INFO& info, KBAN_DRAW& draw)
- {
- return new STAGE_INITIAL;
- }
-
- const char* EDIT_PIN::get_name(void)
- {
- return "Edit:Pin";
- }
-
- STAGE* EDIT_PIN::STAGE_INITIAL::mouse_left_up(KBAN_INFO& info, KBAN_DRAW& draw, const XY& pc, UINT nFlags)
- {
- XY ac;
- info.grid().xy_pc2ac_with_snap_off(pc, ac);
-
- PRIMITIVE& primitive = info.kban_data().primitive();
- uint layer = info.active_layer().get_pin_layer();
- PIN_LIST& pin_list = primitive.layer(layer).pin_list();
- PIN_ELEMENT* target = pin_list.search(ac);
-
- STAGE* retval;
- if(target != NULL) {
- retval = new STAGE_CHANGE(*target);
- } else {
- retval = this;
- }
- return retval;
- }
-
- STAGE* EDIT_PIN::STAGE_INITIAL::mouse_right_up(KBAN_INFO& info, KBAN_DRAW& draw, const XY& pc, UINT nFlags)
- {
- return NULL;
- }
-
- EDIT_PIN::STAGE_CHANGE::STAGE_CHANGE(PIN_ELEMENT& target)
- : m_target(target) {};
-
- STAGE* EDIT_PIN::STAGE_CHANGE::init(KBAN_INFO& info, KBAN_DRAW& draw)
- {
- draw.draw_primitive_pin_target(m_target);
-
- CEditPinDialog dialog(info.apt_pin_table(), m_target, AfxGetMainWnd());
- draw.draw_primitive_pin_target(m_target);
- int result = dialog.DoModal();
- draw.erase_primitive_pin(m_target);
- if(result == IDOK) {
- m_target = dialog.GetPinElement();
- info.apt_pin_table() = dialog.GetAptTable();
- info.SetModifiedFlag();
- }
- uint layer = info.active_layer().get_pin_layer();
- draw.draw_primitive_pin(m_target, layer);
-
- return new STAGE_INITIAL;
- }
-
- STAGE* EDIT_PIN::STAGE_CHANGE::redraw(KBAN_INFO& info, KBAN_DRAW& draw)
- {
- draw.draw_primitive_pin_target(m_target);
- return this;
- }
-